console.log('14BaseRender');
let utils = data["utils"];
let RBushItem = data["RBushItem"];
let RBU = data["RBU"];
let RBush = data["RBush"];
let AreaForRender = data["AreaForRender"];
let quickselect = data["quickselect"];
let SphericalMercator = data["SphericalMercator"];
let PointItem = data["PointItem"];
let PointForRender = data["PointForRender"];
let BoundsItem = data["BoundsItem"];
let QuadTree = data["QuadTree"];
let Node = data["Node"];
let PointSimplifier = data["PointSimplifier"];
let BaseRender = data["BaseRender"];
let LeftNumFunnel = data["LeftNumFunnel"];

var boundsIntersect = BoundsItem.boundsIntersect, boundsContain = BoundsItem.boundsContain; utils.extend(BaseRender.prototype, { getAreaBounds: function (nodeBounds, viewBounds, scaleFactor) { return new BoundsItem((nodeBounds.x - viewBounds.x) / scaleFactor, (nodeBounds.y - viewBounds.y) / scaleFactor, nodeBounds.width / scaleFactor, nodeBounds.height / scaleFactor) }, renderQuadNode: function (rootNode, viewBounds, rootNodeSureInView, scaleFactor) { if (rootNode) { this._opts.drawQuadTree && this.drawQuadNode(rootNode, viewBounds, scaleFactor); var array, args, node, sureInView, i, len, nodeBounds, areaBounds, subNodes, topNodes, selectedNum, descendantsNum, isSmallArea, numForTopSelect, topNAreas = [[], []], normalPoints = [[], []], stack = [[rootNode, rootNodeSureInView]], totalSelectedNum = 0, totalDescendantsNum = 0, pointSize = this.getPointSize(), minAreaSize = this._opts.getAreaSizeForTopSelect(this._currentZoom, pointSize), getNumForTopSelect = this._opts.getNumForTopSelect; do { if (!(node = (args = stack.pop())[0]).isEmpty()) { if (sureInView = args[1], nodeBounds = node.getBounds(), !sureInView) { if (!boundsIntersect(viewBounds, nodeBounds)) continue; sureInView = boundsContain(viewBounds, nodeBounds) } if (areaBounds = this.getAreaBounds(nodeBounds, viewBounds, scaleFactor), subNodes = node.getSubNodes(), descendantsNum = node.getDN(), isSmallArea = areaBounds.width * areaBounds.height <= minAreaSize, subNodes.length > 0 && !isSmallArea) for (i = 0, len = subNodes.length; i < len; i++)stack.push([subNodes[i], sureInView]); else (numForTopSelect = isSmallArea ? getNumForTopSelect.call(null, this._currentZoom, areaBounds, descendantsNum, pointSize, { node: node }) : descendantsNum) > 0 ? (selectedNum = (topNodes = (numForTopSelect = Math.round(numForTopSelect)) >= descendantsNum ? node.getDescendants() : node.getTopDes(numForTopSelect, this._itemCompare)).length, array = normalPoints[sureInView ? 1 : 0], utils.merge(array, topNodes), topNodes.length = 0) : selectedNum = 0, selectedNum < descendantsNum && (array = topNAreas[sureInView ? 1 : 0]).push(new AreaForRender(areaBounds, descendantsNum, selectedNum)), totalDescendantsNum += descendantsNum, totalSelectedNum += selectedNum } } while (stack.length > 0); this._leftNumFunnel.setLeftNum("findQuadNodes", totalDescendantsNum), this._leftNumFunnel.setLeftNum("topNAreaSelect", totalSelectedNum); var handlers = [{ list: normalPoints, render: this._callNormalPointsRender }]; for (i = 0, len = handlers.length; i < len; i++) { var item = handlers[i], render = item.render, list = item.list; render.call(this, list[1], list[0], viewBounds, scaleFactor), list[0].length = 0, list.length = 0 } } } });

return {
  "utils": utils,
  "RBushItem": RBushItem,
  "RBU": RBU,
  "RBush": RBush,
  "AreaForRender": AreaForRender,
  "LeftNumFunnel": LeftNumFunnel,
  "quickselect": quickselect,
  "SphericalMercator": SphericalMercator,
  "PointItem": PointItem,
  "PointForRender": PointForRender,
  "BoundsItem": BoundsItem,
  "QuadTree": QuadTree,
  "Node": Node,
  "PointSimplifier": PointSimplifier,
  "BaseRender": BaseRender
}